#include "../inc/ts.h"

// 获取点击的坐标值
int get_ts_xy(int *x, int *y)
{
    // 打开触摸屏
    int fd_ts = open("/dev/input/event0", O_RDWR);
    if (fd_ts < 0)
    {
        printf("open ts fail\n");
        return -1;
    }

    // 读触摸屏信息
    struct input_event ts; // 存储触摸屏信息的结构体
    while (1)
    {
        // 清空存储区
        memset(&ts, 0, sizeof(struct input_event));

        // 当触摸屏没有点击的时候它会阻塞在这个地方
        read(fd_ts, &ts, sizeof(struct input_event));

        // x轴坐标值
        if (ts.type == EV_ABS && ts.code == ABS_X)
        {
            // printf("x = %d ", ts.value); // 蓝色触摸屏
            // printf("x = %d ", (int)(ts.value * 0.78)); // 1024-->800 黑色
            // printf("x = %d ", ts.value * 800 / 1024); // 黑色触摸屏
            // *x = ts.value;
            *x =  ts.value * 800 / 1024;
        }
        // y轴坐标值
        if (ts.type == EV_ABS && ts.code == ABS_Y)
        {
            // printf("y = %d\n", ts.value); // 蓝色触摸屏
            // printf("y = %d \n", ts.value * 480 / 600); // 黑色触摸屏600-->480
            // *y = ts.value;
            *y = ts.value * 480 / 600;
        }

        /*
            开发者下面的两组坐标值二选一
        */
        // 获取按下去的值
        if (ts.type == EV_KEY && ts.code == BTN_TOUCH && ts.value == 1)
        {
            // printf("down x=%d y=%d\n", x, y); //调试代码
            break;
        }
        // 获取松手后的值
        // if (ts.type == EV_KEY && ts.code == BTN_TOUCH && ts.value == 0)
        // {
        //     printf("up x=%d y=%d\n", x, y);
        // }
    }

    // 关闭文件
    close(fd_ts);
}
